// https://leetcode.cn/problems/palindrome-number/?envType=problem-list-v2&envId=o01seMu2

// 判断回文数

// 提示：负数或末位为 0 且不为 0 的数，不可能是回文

// 基本算法，会遍历每一位数字
pub fn is_palindrome(x: i32) -> bool {
    let mut a = x;
    if a < 0 {
        a = 0 - a;
    }

    let mut y = 0;

    while a != 0 {
        let b = a % 10;
        a = a / 10;
        y = y * 10 + b;
    }

    return x == y;
}

// 高效算法，只遍历一般的位数
pub fn is_palindrome_2(x: i32) -> bool {
    if x < 0 || (x != 0 && x % 10 == 0) {
        return false;
    }

    let mut a = x;
    let mut b = 0;
    while a > b {
        b = b * 10 + a % 10;
        a = a / 10;
    }

    return a == b || a == b / 10;
}
